package com.jinqing.wuchuang.service.impl;

import com.jinqing.wuchuang.entity.FdfsFile;
import com.jinqing.wuchuang.entity.FilePurpose;
import com.jinqing.wuchuang.entity.SettleFile;
import com.jinqing.wuchuang.mapper.SettleFileMapper;
import com.jinqing.wuchuang.service.SettleFileService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jinqing.wuchuang.utils.FastDFSUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author zhulu
 * @since 2022-01-17
 */
@Service
public class SettleFileServiceImpl  implements SettleFileService {

    @Autowired
    private SettleFileMapper settlementMapper;
    @Override
    public void upAttachment(int companyId, MultipartFile file) throws IOException {
        /**
         * 上传附件，分两步进行，首先把文件传到服务器，然后更新数据库即可
         */
        //获取文件对应的字节数组
        byte[] buffFile=file.getBytes();
        //获取文件名
        String fileName=file.getOriginalFilename();
        //获取文件大小
        Long fileSize=file.getSize();
        //获取文件类型
        String fileType=file.getContentType();
        //可能会出现问题因为有些文件可能没有扩展名，因此必要时需要做逻辑控制
        String fileExtName=fileName.substring(fileName.lastIndexOf(".")+1);
        //上传文件
        String[] uploadResult= FastDFSUtil.upload(buffFile,fileExtName);
        //把文件信息保存到数据库，以后下载文件就从数据库获取到文件路径再下载
        SettleFile settleFile = new SettleFile();
        settleFile.setCompanyId(companyId);
        settleFile.setRemoteFilename(uploadResult[1]);
        settleFile.setName(fileName);
        settleFile.setSize(fileSize);
        settleFile.setType(fileType);
        settleFile.setPurpose("ATTACHMENTS");
        settlementMapper.insert(settleFile);
    }
}
